<?php

declare(strict_types=1);
namespace app\admin\middleware;


use think\Response;

class Auth
{
    /**
     * 模块全局
     *中间件请求调度
     * 创建中间件要在相应的模块配置才会生效
     * @param $request
     * @param \Closure $next
     * @return mixed
     */
    public function handle($request, \Closure $next){//请求+闭包
        //前置中间件 前置中间件无法获取控制器名
        if(empty(session(config('admin.session_admin'))) && !preg_match("/login/", $request->pathinfo())){
            return redirect((string) url('login/index'));//开启严格模式url返回值类型(stringBuild)必须转换成string
        }
        $response = $next($request);
        //后置中间件 可以获取控制器名 后置中间件处理会导致控制器方法被执行
        /*if(empty(session(config('admin.session_admin'))) && $request->controller() != "Login"){
            return redirect((string) url('login/index'));//开启严格模式url返回值类型(stringBuild)必须转换成string
        }*/
        return $response;
    }

    /**
     * 中间件响应调度
     * @param Response $response
     */
    public function end(Response $response){

    }
}